/*
**********************************************************************************************************************
*
*                                   the Embedded Secure Bootloader System
*
*
*                               Copyright(C), 2006-2014, Allwinnertech Co., Ltd.
*                                           All Rights Reserved
*
* File    :
*
* By      :
*
* Version : V2.00
*
* Date      :
*
* Descript:
**********************************************************************************************************************
*/

#ifndef _UART_H_
#define _UART_H_

#define CCM_UART_PORT_OFFSET          20
#define CCM_UART_ADDR_OFFSET          0x400

typedef struct serial_hw
{
    volatile unsigned int rbr;        /* 0 */
    volatile unsigned int ier;        /* 1 */
    volatile unsigned int fcr;        /* 2 */
    volatile unsigned int lcr;        /* 3 */
    volatile unsigned int mcr;        /* 4 */
    volatile unsigned int lsr;        /* 5 */
    volatile unsigned int msr;        /* 6 */
    volatile unsigned int sch;        /* 7 */
}serial_hw_t;


#define   UART_BAUD    115200           // Baud rate for UART
                                        // Compute the divisor factor
// UART Line Control Parameter
#define   PARITY            0           // Parity: 0 - odd parity;1 - even parity
#define   PARITY_ENABLE     0           // PARITY_ENABLE 0 disable  ;1 enable
#define   STOP              0           // Number of Stop Bit: 0 - 1bit; 1 - 2(or 1.5)bits
#define   DLEN              3           // Data Length: 0 - 5bits; 1 - 6bits; 2 - 7bits; 3 - 8bits


void sunxi_serial_init (int uart_port, void *gpio_cfg, int gpio_max);
void sunxi_serial_putc (char c);
char sunxi_serial_getc (void);
int  sunxi_serial_tstc (void);


#endif    /*  #ifndef _UART_H_  */
